package com.sunda.spmswms.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sunda.spmscommon.ResponseResult;
import com.sunda.spmswms.entity.SapPackageList;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * SAP装箱单表抬头 服务类
 * </p>
 *
 * @author Wayne
 * @since 2021-04-22
 */
public interface ISapPackageListService extends IService<SapPackageList> {

    /** 根据用户工号查询跟该用户所在仓库有关的装箱单/出库任务。只要装箱单明细中有一行跟用户所在仓库有关，就给用户显示该装箱单。 */
    List<Map<String, Object>> getSapPackageList(String userId, String packageList, String spmsStatus);

    /** 根据装箱单号查看装箱单详情数据，备件货带箱码信息 */
    List<Map<String, Object>> getSapPackageListDtl(String packageList);

    ResponseResult checkSapPackageListCanBeSplit(String packageList);

    /** 更新装箱单表头状态为 targetStatus，更新前校验单据状态是否是 currentStatus */
    int updateSapPackageList(String userId, String packageList, String targetStatus, String currentStatus);

    /** 贸易货卸货入库，根据装箱单号查询装箱单结果详情数据 */
    List<Map<String, Object>> getSapPackageListDtlM(String packageList);

    /** 获取跟当前用户相关的装箱单任务表头信息，Map 分页 */
    Page<Map<String, Object>> getSapPackageListPage(String userId, String packageList,
                                                    String spmsStatus, int pageNo, int pageSize);

    /** 1085上锁标识。SPMS系统同步SAP底表标记锁表信息，REST 方式。 */
    JSONObject lockSapPackageList(String packageList);

    /** 实时向SAP REST请求一次装箱单数据，返回箱单信息给前端用户显示 */
    ResponseResult getSapPackageListRest(String packageList);

}
